package br.com.imob.dao;

import br.com.imob.modelo.Construtora;

import java.util.List;

/** @user Gilton Nascimento
 *  @since 12:28:25 31/01/2011 2011
 *  @version 
 */

public class ConstrutoraDao extends GenericDao {
	
	public ConstrutoraDao() {  }
	
	public Integer adicionarConstrutora(Construtora construtora) {
		saveOrUpdatePojo(construtora);
		return construtora.getConstrutoraId();
	}
	
	public void removerConstrutora(Construtora construtora) {
		removerPojo(construtora);
	}

	/* Precisa definir o ID */
	public void atualizarConstrutora(Construtora recupera) {
		saveOrUpdatePojo(recupera);
	}
	
	/**
	 * Editar um Construtora
	 * @param String oldConstrutora
	 * @param String newConstrutora
	 */
	public void atualizarConstrutora(String tpStr, String oldConstrutora, String newConstrutora ) {
		
		if( "login".equalsIgnoreCase(tpStr) ) {
			if ( ( !"".equalsIgnoreCase(oldConstrutora) && oldConstrutora != null )
					&& ( !"".equalsIgnoreCase(newConstrutora) && newConstrutora != null ) ) 
				atualizarConstrutora( getConstrutoraQNamedFantasia(oldConstrutora), new Construtora(tpStr, newConstrutora) );
		}
		
		if( "senha".equalsIgnoreCase(tpStr) ) {
			if ( ( !"".equalsIgnoreCase(oldConstrutora) && oldConstrutora != null )
					&& ( !"".equalsIgnoreCase(newConstrutora) && newConstrutora != null ) ) 
				atualizarConstrutora( getConstrutoraQNamedRazaoSocial(oldConstrutora), new Construtora(tpStr, newConstrutora) );
		}
		
	}

	
	
	/* Precisa definir qual atribuito sera a chave a identificar 
	 * a tupla a ser alterada */
	
	public void atualizarConstrutora(Construtora recuperar, Construtora alterar) {
		recuperar = retriveConstrutora(recuperar);
		
		if(alterar.getFantasia() != null)
			recuperar.setFantasia( alterar.getFantasia() );
		if(alterar.getRazaoSocial() != null)
			recuperar.setRazaoSocial( alterar.getRazaoSocial() );
		
		saveOrUpdatePojo(recuperar);
	}
	
	
//	Artificio para Recuperar a Tupla de Construtora
	protected Construtora retriveConstrutora(Construtora recuperar) {
		if(recuperar.getConstrutoraId() != null)
			return getConstrutora(recuperar.getConstrutoraId());

		if(recuperar.getFantasia() != null)
			return getConstrutoraQNamedFantasia(recuperar.getFantasia());
		 
		if(recuperar.getRazaoSocial() != null)
			return getConstrutoraQNamedRazaoSocial(recuperar.getRazaoSocial());
		return recuperar;
	}
	
	
//	Consultas
	public Construtora getConstrutora(Integer key) {
		return getPojoByID(Construtora.class, key);
	}
	public Construtora getConstrutoraByQuery(String query, Object...params) {
		return getPojoByQry(query, params);
	}
	public Construtora getConstrutoraQNamedFantasia(String fltrFantasia) {
		return getPojoByQNamed("Construtora.findByFantasia", fltrFantasia);
	}
	public Construtora getConstrutoraQNamedRazaoSocial(String fltrRazaoSocial) {
		return getPojoByQNamed("Construtora.findByRazaoSocial", fltrRazaoSocial);
	}
	
	
	
	public List<Construtora> getConstrutoras() {
		return (List<Construtora>) getALL(Construtora.class);
	}
	
	public List<Construtora> getConstrutorasQNamedFantasiaPRX(String fltrFantasia) {
		return getListByQNamedPRX("Construtora.findLikeByFantasia", fltrFantasia);
	}
	public List<Construtora> getConstrutorasQNamedRazaoSocialPRX(String fltrRSocial) {
		return getListByQNamedPRX("Construtora.findLikeByRazaoSocial", fltrRSocial);
	}
	
	public List<Construtora> getConstrutorasByQuery(String query, Object...params) {
		return getListByQry(query, params);
	}

	
}
